<?
	class InputEntidad extends Input
	{
		var $oTipo;
		var $oInput;
		var $nTipo;
	function showLabel ( )
		{
			return $this->oTipo->showLabel( );
		}
	function setLabel ( $cLabel, $cAccessKey = '')
		{
			return $this->oTipo->setLabel( $cLabel, $cAccessKey  );
		}
	function setDefault( $ncTipoEntidad )
	{
		if ($this->oTipo->getValue() == ''  ) $this->setTipoEntidad ( $ncTipoEntidad );
	}
	function setTipoEntidad ( $ncTipoEntidad )
		{
			$this->oTipo->setValue( $ncTipoEntidad );
			switch ( $ncTipoEntidad )
			{
				case ENTIDAD_PARTICULAR:
					//$this->oInput = new InputText( 'nc' . $this->cField );
					//$this->oInput->setDisabled();
					//break;
				case ENTIDAD_ORGANIZACION:
				case ENTIDAD_ESTABLECIMIENTO:
				case ENTIDAD_PERSONA:
				case ENTIDAD_REPARTICION:
					$this->oInput = new InputLookUp( '', 'nc' . $this->cField, $this->cValue, $this->bMandatory );
					break;
				case ENTIDAD_CITS:
				case ENTIDAD_EVENTOS:
				case ENTIDAD_AREA:
				case ENTIDAD_PERSONAL:
				case ENTIDAD_CAMPANA:
					$this->oInput = new InputList( '','nc' . $this->cField, $this->cValue, $this->bMandatory );
					break;
			}
		}
	function InputEntidad( $cLabel, $cField, $cValue = '', $bMandatory = false  )
		{
			if ( $cField == '' ) $cField = getParam('cField');
			$this->Input( $cLabel, $cField, $cValue, $bMandatory );
			$this->oTipo = new InputList ( '',"ncTipo$cField" );
			if ( $this->oTipo->getValue() )
			{
				$this->setTipoEntidad( $this->oTipo->getValue() );
			}
		}
		function setDatabase ( &$oDatabase )
		{
			$this->oDatabase = &$oDatabase;
		}
		function setValue( $cValue )
		{
			if ( $this->oInput ) $this->oInput->setValue($cValue);
		}
		function getValue()
		{
			$aRet = array () ;
			if ( $this->oInput )
			{
				$aRet[ $this->oTipo->cField ] = $this->oTipo->getValue();
			}
			if ( $this->oInput )
			{
				$aRet[ $this->oInput->cField ] = $this->oInput->getValue();
			}
			return $aRet;
		}
		function refresh()
		{
			return $this->makeInput($this->oTipo->getValue());
		}
		function makeInput ( $ncTipoEntidad )
			{
				switch ( $ncTipoEntidad )
				{
					case ENTIDAD_ORGANIZACION:
						initializeOrganizacion( $this->oInput);
						$cInput = $this->oInput->make() . $this->oInput->showActions();
						break;
					case ENTIDAD_ESTABLECIMIENTO:
						initializeEstablecimiento( $this->oInput );
						$cInput = $this->oInput->make() . $this->oInput->showActions();
						break;
					case ENTIDAD_PARTICULAR:
						//$cInput =  $this->oInput->make();
						//break;
					case ENTIDAD_PERSONA:
						initializePersona( $this->oInput);
						$cInput =  $this->oInput->make() . $this->oInput->showActions();
						break;
					case ENTIDAD_PERSONAL:
						$cSql = "SELECT Per.ncPersona, cApellido, cNombre FROM atPersona as Per
												JOIN atPersonal as Prs ON Per.ncPersona = Prs.ncPersona
												WHERE Prs.bBaja = 0
												ORDER BY cApellido";
						$this->oInput->addColDescription(2);
						$this->oInput->setSeparatorDescription(', ');
						$this->oInput->setMatrix( $this->oDatabase->getMatrix ( $cSql ) );
						$cInput = $this->oInput->make();
						break;
					case ENTIDAD_REPARTICION:
						initializeReparticion( $this->oInput);
						$cInput =  $this->oInput->make() . $this->oInput->showActions();
						break;
					case ENTIDAD_AREA:
						$cSql = "SELECT ncArea, cdArea FROM atOrganizacionArea WHERE ncOrganizacion = " . CODIGO_ORGANIZACION;
						//if ( $this->bMesaEntradas == false ) $cSql .= " WHERE ncArea <> 20 ";
						$cSql .= " order by 2";
						$this->oInput->setMatrix( $this->oDatabase->getMatrix ( $cSql ) );
						$cInput =  $this->oInput->make();
						break;
					case ENTIDAD_CITS:
						$cSql = "SELECT a.ncEstablecimiento, a.cdEstablecimiento
												FROM gtEstablecimiento as a
												WHERE ncOrganizacion = 1025" ;
						$this->oInput->setMatrix( $this->oDatabase->getMatrix ( $cSql ) );
						$cInput = $this->oInput->make();
						break;
					case ENTIDAD_CAMPANA:
						$cSql = "SELECT ncCampana, cdCampana
												FROM gtCampana " ;
						$this->oInput->setMatrix( $this->oDatabase->getMatrix ( $cSql ) );
						$oModule =& loadModule( 'git' );
						$this->oInput->addActionArray( 2, $oModule->getActionArray( AGREGAR_CAMPANA), '' . $cParametros , $this->oInput->getField() );
						$this->oInput->addActionArray( 3, $oModule->getActionArray( MODIFICAR_CAMPANA), '' . $cParametros, $this->oInput->getField() );
						$cInput =  $this->oInput->make() . $this->oInput->showActions();;
						break;
					case ENTIDAD_EVENTOS:
						$cSql = "SELECT ncEvento, cdEvento FROM gtEvento  ";
						$this->oInput->setMatrix( $this->oDatabase->getMatrix ( $cSql ) );
						$oModule =& loadModule( 'git' );
						$this->oInput->addActionArray( 2, $oModule->getActionArray( AGREGAR_EVENTO), '' . $cParametros , $this->oInput->getField() );
						$this->oInput->addActionArray( 3, $oModule->getActionArray( MODIFICAR_EVENTO), '' . $cParametros, $this->oInput->getField() );
						$cInput =  $this->oInput->make() . $this->oInput->showActions();;
						break;
				}
				return $cInput;
			}
		function make()
		{
			$oWhere = new BuildExpression();
			if ( $this->nTipo == 1 )
				$oWhere->add( 'ncTipoEntidad', '1,4,5,6', 'in' );
			if ( $this->nTipo == 2 )
				$oWhere->add( 'ncTipoEntidad', '1,7,5, 8, 9, 10', 'in' );
			$oWhere->add( "ncTipoEntidad",  $this->ncTipoFiltro );
			$oWhere->add( "bInterna",  $this->bInterna );
			$cSql = "SELECT ncTipoEntidad, cdTipoEntidad FROM gcTipoEntidad" . $oWhere->make();
			$this->oTipo->setMatrix( $this->oDatabase->getMatrix ( $cSql ) );
			if ( MODO_AJAX == true  )
			{
				$cUrl = "\"?" . PARAM_MODULE . '=git&amp;' . PARAM_REFRESH . '=object&amp;' . PARAM_CLASS . '=InputEntidad&amp;cFormName=' . $this->getFormName() . '&amp;cField=' . $this->cField . "&amp;ncTipo" . $this->cField . "=\" + this.value" ;
				$cOnChange = "return send( $cUrl, refreshElement, \"" . $this->cField . "\" );";
				$this->oTipo->setOnChange( $cOnChange );
			} else
			{
				$this->oTipo->setOnChangeAutoSubmit();
			}
			$cInput = $this->makeInput ( $this->oTipo->getValue() ) ;
			if ( MODO_AJAX == true  ) $cInput =  "<DIV style='display:inline;' id='" . $this->cField . "' >" . $cInput . "</DIV>";
			return $this->oTipo->make() . $cInput ;
		}
		function getDescriptionAction( $ncTipoEntidad, $ncEntidad )
		{
			$cDescription = $this->getDescription ( $ncTipoEntidad, $ncEntidad ) . ' ' ;
			switch( $ncTipoEntidad )
				{
					case ENTIDAD_ORGANIZACION:
						$oModAdministracion =& loadModule("administracion");
						return  $oModAdministracion->makeAction($cDescription, VER_ORGANIZACION, "ncOrganizacion=$ncEntidad");
						break;
					case ENTIDAD_ESTABLECIMIENTO:
					case ENTIDAD_CITS:
						$oModGit =& loadModule("servicios");
						return  $oModGit->makeAction($cDescription, VER_ESTABLECIMIENTO, "ncEstablecimiento=$ncEntidad");
						break;
					case ENTIDAD_PERSONA:
					case ENTIDAD_PERSONAL:
					case ENTIDAD_PARTICULAR:
						$oModAdministracion =& loadModule("administracion");
						if ( $ncEntidad)
							return  $oModAdministracion->makeAction($cDescription, VER_PERSONA, "ncPersona=$ncEntidad");
						else
							return  "Particular";
						break;
					case ENTIDAD_AREA:
						$oModAdministracion=& loadModule("administracion");
						return  $oModAdministracion->makeAction($cDescription, CONSULTAR_PERSONAS_DE_UNA_ORGANIZACION, "ncOrganizacion=" .CODIGO_ORGANIZACION . "&amp;ncArea=$ncEntidad" , '', VENTANA_SECUNDARIA);
						break;
					case ENTIDAD_EVENTOS:
						$oModGit =& loadModule("eventos");
						return  $oModGit->makeAction( $cDescription, VER_EVENTO, "ncEvento=$ncEntidad" );
						break;
					case ENTIDAD_PARTICULAR:
						return  "Particular";
						break;
				}
		}
		function getDescription ( $ncTipoEntidad, $ncEntidad )
			{
				// Busca los datos de acuerdo al tipo de entidad
				switch( $ncTipoEntidad )
				{
					case ENTIDAD_ORGANIZACION:
						$cSql = "SELECT cdOrganizacion FROM atOrganizacion WHERE ncOrganizacion = $ncEntidad";
						$cdEntidad = $this->oDatabase->getData( $cSql );
						break;
					case ENTIDAD_ESTABLECIMIENTO:
					case ENTIDAD_CITS:
						$cSql = "SELECT cdEstablecimiento FROM gtEstablecimiento WHERE ncEstablecimiento = $ncEntidad";
						$cdEntidad = $this->oDatabase->getData( $cSql );
						break;
					case ENTIDAD_PERSONA:
					case ENTIDAD_PERSONAL:
					case ENTIDAD_PARTICULAR:
						$cSql = "SELECT cApellido, cNombre FROM atPersona WHERE ncPersona = $ncEntidad";
						list($cApellido, $cNombre) = $this->oDatabase->getArray( $cSql );
						$cdEntidad = $cApellido . ', ' . $cNombre;
						break;
					case ENTIDAD_REPARTICION:
						$cSql = "SELECT cdReparticion FROM gcReparticion WHERE ncReparticion = $ncEntidad";
						$cdEntidad = $this->oDatabase->getData( $cSql );
						break;
					case ENTIDAD_AREA:
						$cSql = "SELECT cdArea FROM atOrganizacionArea WHERE ncArea = $ncEntidad AND ncOrganizacion = " . CODIGO_ORGANIZACION;
						$cdEntidad = $this->oDatabase->getData( $cSql );
						break;
					case ENTIDAD_EVENTOS:
						$cSql = "SELECT cdEvento FROM gtEvento  WHERE ncEvento= $ncEntidad";
						$cdEntidad = $this->oDatabase->getData( $cSql );
						break;
					case ENTIDAD_CAMPANA:
						$cSql = "SELECT cdCampana FROM gtCampana WHERE ncCampana= $ncCampana";
						$cdEntidad = $this->oDatabase->getData( $cSql );
						break;
					case ENTIDAD_PARTICULAR:
						$cdEntidad = "Particular";
						break;
				}
				return $cdEntidad;
			}
	}

?>